package com.yehebl.orm.data.common.dao;

import java.util.Map;

import com.yehebl.orm.data.common.dto.ResultObject;
import com.yehebl.orm.data.common.xml.AQueryXmlSql;

/**
 * 查询一个值
 *
 */
public interface IObjectDao {

	/**
	 * 获取单个值，只获得第一行第一列
	 * 
	 * @param sqlName sql 查询
	 */
	Object getObjectBySqlName(String sqlName, AQueryXmlSql queryXmlSql);

	/**
	 * 获取单个值，只获得第一行第一列
	 * 
	 * @param sqlName sql 查询
	 */
	ResultObject getResultObjectBySqlName(String sqlName, AQueryXmlSql queryXmlSql);

	/**
	 * 获取单个值，只获得第一行第一列
	 */
	Object getObjectBySqlName(String sqlName);

	/**
	 * 获取单个值，只获得第一行第一列
	 */
	ResultObject getResultObjectBySqlName(String sqlName);

	/**
	 * 获取单个值
	 */
	Object getObjectBySql(String sql, Object... objs);

	/**
	 * 获取单个值
	 * 
	 * @param sql sql语句
	 * @param objs 参数
	 */
	ResultObject getResultObjectBySql(String sql, Object... objs);

	/**
	 * 获取条数
	 * 
	 * @param expression 表达式
	 * @param value 值
	 */
	<T> Integer getCountByExpression(String expression, Object value, Class<T> clazz);

	/**
	 * 获取条数
	 * 
	 * @param params 参数
	 * @param clazz 返回的类型
	 */
	<T> Integer getCountByMap(Map<String, Object> params, Class<T> clazz);

	
	/**
	 * 获取实体类的count数
	 * 
	 * @param clazz 返回的类型
	 */
	<T> Integer getCount(Class<T> clazz);
}
